package cn.aws360.boot.system.biz.service;

import cn.aws360.boot.data.api.pojo.request.PageQuery;
import cn.aws360.boot.data.api.pojo.response.PageResult;
import cn.aws360.boot.system.api.pojo.request.SysMenuQuery;
import cn.aws360.boot.system.api.pojo.request.SysMenuWrite;
import cn.aws360.boot.system.api.pojo.response.SysMenuModel;
import cn.aws360.boot.system.biz.domain.SysMenu;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author junnan
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 新增菜单
     *
     * @param sysMenuWrite 新增菜单参数
     * @return 是否成功
     */
    Boolean add(SysMenuWrite sysMenuWrite);

    /**
     * 修改菜单
     *
     * @param sysMenuWrite 修改菜单参数
     * @return 是否成功
     */
    Boolean edit(SysMenuWrite sysMenuWrite);

    /**
     * 删除菜单
     *
     * @param ids 删除菜单 ids
     * @return 是否成功
     */
    Boolean remove(String ids);

    /**
     * 查询菜单详情
     *
     * @param id 查询菜单 id
     * @return SysMenuModel
     */
    SysMenuModel detail(Integer id);

    /**
     * 查询菜单列表
     *
     * @param sysMenuQuery 查询菜单参数
     * @return List<SysMenuModel>
     */
    List<SysMenuModel> findList(SysMenuQuery sysMenuQuery);

    /**
     * 查询菜单分页
     *
     * @param sysMenuQuery 查询菜单参数
     * @param pageQuery    查询分页参数
     * @return PageResult<SysMenuModel>
     */
    PageResult<SysMenuModel> findPage(SysMenuQuery sysMenuQuery, PageQuery pageQuery);

    /**
     * 查询菜单树形
     *
     * @param sysMenuQuery 查询部门参数
     * @return List<Tree < Integer>>
     */
    List<Tree<Integer>> findTree(SysMenuQuery sysMenuQuery);

}
